// 开始login
function login(callback) {
  wx.showLoading()
  wx.login({
    success(res) {
      if (res.code) {
        // 登录成功，获取用户信息
        getUserInfo(res.code, callback)
      } else {
        // 封装弹窗显示showLogin
        showLogin()
      }
    },
    fail() {
      showLogin()
    }
  })
}

// 获取用户信息
function getUserInfo(code, callback) {
  wx.getUserInfo({
    success(res) {
      // 全局存储用户信息
      wx.setStorageSync('storeWxUser', res.userInfo)
      // console.log(res)
      doLogin(code, res.iv, res.encryptedData, callback)
    },
    // 获取失败，弹窗提示一键登录
    fail() {
      wx.hideLoading()
      // 清除本地存储
      wx.clearStoragesync();
      // 清除本地存储
      showLoginPanel()
    }
  })
}

// 开发者服务端登录
function doLogin(code, iv, encryptedData, callback) {
  let params = {
    code: code,
    iv: iv,
    encryptedData: encryptedData
  }

  wx.request({
    url: getApp().globalData.urlBase + '/wx/onLogin',
    method: 'POST',
    data: params,
    header: {
      "Content-Type": "application/x-www-form-urlencoded"
    },
    success(res){
      if (res.data.code == 1) {
        wx.hideLoading()
        // 登录成功，
        // 使用token管理登录态的，存储全局token，用于当做登录态判断
        wx.setStorageSync('storeToken', res.data.openid)
        wx.setStorageSync('isBindedTJ', res.data.isBindedTJ)
        let session = 'JSESSIONID=' + res.data.sessionId
        wx.setStorageSync('JSESSIONID', session)
        getApp().globalData.header.Cookie = session;
        typeof callback == "function" && callback()
      } else {
        showLogin()
      }
    },fail(){
      showLogin()
    }
  })
}

// 显示toast弹窗
function showLogin(content = '登录失败，请稍后再试') {
  wx.showToast({
    title: content,
    icon: 'none'
  })
}

// 判断是否登录,可在回调中重新向服务器校验持久化用户信息
function isLogin(callback) {
  wx.clearStorage({
    complete: (res) => {},
  })
  let token = wx.getStorageSync('storeToken')
  if (token) {
    // 如果有全局存储的登录态，检查授权是否到期
    wx.checkSession({
      success:function(){
        //session_key 未过期
        checkBindStatus();
      },fail:function(){
        //session_key 已过期，弹窗提示一键登录
        showLoginPanel()
      }
    })
    typeof callback == "function" && callback(wx.getStorageSync('storeToken'))
  } else {
    // 如果没有登录态，弹窗提示一键登录
    showLoginPanel()
  }
}

// 显示一键登录的弹窗
function showLoginPanel() {
  wx.navigateTo({
    url: '/pages/account/login/login',
  })
}

function checkBindStatus() {
  let isBindedTJ = wx.getStorageSync('isBindedTJ')
  if (!isBindedTJ) {
    wx.navigateTo({
      url: '../account/regist/regist',
    })
    wx.showToast({
      title: '请先绑定糖家账号',
      icon: 'none',
      duration: 2500,
      mask:true
    })
  } 
}

module.exports = {
  login: login
  , isLogin: isLogin
  , isBind: checkBindStatus
};